/*
 * 文件名：RoleDao.java
 * 版权：Copyright by will_awoke
 * 描述：
 * 修改人：will_awoke
 * 修改时间：2014-8-19
 * 跟踪单号：
 * 修改单号：
 * 修改内容：
 */

package com.qbgs.rbac.dao;


import java.util.List;
import java.util.Map;

import com.qbgs.base.Page;


/**
 * 
 * @author will_awoke
 * @version 2014-8-19
 * @see RoleDao
 * @since
 */
public interface RoleDao
{

    /**
     * 角色分页查询
     * @param currentPage 当前页
     * @param numPerPage 每页显示记录数
     * @param loginName 角色名
     * @return
     * @see
     */
    Page queryRolePage(int currentPage, int numPerPage, String roleName);

    /**
     * 查询所有角色
     * @return 
     * @see
     */
    List<Map<String, Object>> queryAllRoles();

    /**
     * 根据id查询对应的角色
     * @param roleId
     * @return 
     * @see
     */
    List<Map<String, Object>> queryRoleById(String roleId);

    /**
     * 新增角色
     * @param roleName
     * @param remarks
     * @return 新增角色对应的序列id主键
     * @see
     */
    int addRole(final String roleName, final String remarks);

    /**
     * 新增角色菜单关联关系
     * @param roleId
     * @param menuId
     * @return 
     * @see
     */
    int addRoleMenu(String roleId, String menuId);

    /**
     * 查询角色已关联的用户数量
     * @param roleId
     * @return 如无关联的用户则返回0
     * @see
     */
    int queryRoleRefUser(String roleId);

    /**
     * 查询角色所绑定菜单id集合
     * @param roleId
     * @return 
     * @see
     */
    List<String> queryMenuIdsByRoleId(String roleId);

    /**
     * 删除角色所绑定的菜单关系
     * @param roleId
     * @return 
     * @see
     */
    int deleteMenusOfRole(String roleId);

    /**
     * 删除角色
     * @param roleId
     * @return 
     * @see
     */
    int deleteRole(String roleId);

    /**
     * 修改角色信息
     * @param roleId
     * @param roleName
     * @param remarks
     * @return 
     * @see
     */
    int updateRole(final String roleId, final String roleName, final String remarks);

}
